有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JavaFx表格视图滚动错误

我在代码中创建了一个TableView,但当我开始向下或向上滚动时,我的单元格消失了

但是当我访问另一个选项卡并返回包含TableView单元格的选项卡时,这些单元格会重新出现

这是我的代码:

UserCollection collection = new UserCollection();
    collection.load();

 table.setItems(collection.getItems());
    cUserStatsId.setCellValueFactory(cellData -> cellData.getValue().getId().asObject());
    column1.setCellValueFactory(cellData -> cellData.getValue().getLevel().asObject());
    column2.setCellValueFactory(cellData -> cellData.getValue().getIsOnline());
    column3.setCellValueFactory(cellData -> cellData.getValue().getOrigin());
    column4.setCellValueFactory(cellData -> cellData.getValue().getPoints().asObject());
    column5.setCellValueFactory(cellData -> cellData.getValue().getPositionString());
    column6.setCellValueFactory(cellData -> cellData.getValue().getUsername());
    column7.setCellValueFactory(
            new Callback<TableColumn.CellDataFeatures<User, Boolean>,
                    ObservableValue<Boolean>>() {

                @Override
                public ObservableValue<Boolean> call(TableColumn.CellDataFeatures<User, Boolean> p) {
                    return new SimpleBooleanProperty(p.getValue() != null);
                }
            });

    column7.setCellFactory(
            new Callback<TableColumn<User, Boolean>, TableCell<User, Boolean>>() {

                @Override
                public TableCell<User, Boolean> call(TableColumn<User, Boolean> p) {
                    return new ButtonCellForUserStats(userStatsTable);
                }


            });

public class ButtonCellForUserStats extends TableCell<User, Boolean> {
    final Button cellButton = new Button("☆");
    final Button editButton = new Button("✍");
    private HBox sk = new HBox(cellButton, editButton);

    ButtonCellForUserStats(final TableView tblView) {
        cellButton.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent t) {
                User record = (User) getTableRow().getItem();
                System.out.println(record.getId().get());
            }
        });
        editButton.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent t) {
                User record = (User) getTableRow().getItem();
                boolean buttonOkWasPressed = App.showUserStatsEditDialog(record);
                if (buttonOkWasPressed) {
                    record.save();
                }
                getTableView().refresh();
            }
        });
    }


    @Override
    protected void updateItem(Boolean t, boolean empty) {
        super.updateItem(t, empty);
        if (!empty) {
            setGraphic(sk);
            sk.setSpacing(5);
            cellButton.setPrefWidth(62.5D);
            cellButton.setPrefSize(62.5,10.0);
            cellButton.setPadding(new Insets(0,0,0,0));
            editButton.setPrefWidth(62.5D);
            editButton.setPrefSize(62.5,10.0);
            editButton.setPadding(new Insets(0,0,0,0));
            sk.setStyle("-fx-background-color: transparent; -fx-text-fill: white;");
            cellButton.setStyle("-fx-background-color: lightgrey; -fx-text-fill: black;  -fx-font-size: 20px;");
            editButton.setStyle("-fx-background-color: lightgrey; -fx-text-fill: black;  -fx-font-size: 20px;");
        } else {
            setGraphic(null);
        }
    }
}

以下屏幕截图显示了该问题:

enter image description here


共 (0) 个答案